package com.eian.boot.crypto.core;

import com.eian.boot.crypto.enums.CryptoAlgorithm;
import com.eian.boot.crypto.model.CryptoContext;

/**
 * 加密策略接口
 * <p>
 * 调用者实现此接口以提供具体的加密算法实现
 *
 * @author eian
 */
public interface EncryptStrategy {

    /**
     * 支持的算法类型
     *
     * @return 加密算法
     */
    CryptoAlgorithm algorithm();

    /**
     * 加密字符串
     *
     * @param plaintext 明文
     * @param context   加密上下文
     * @return 密文
     */
    String encrypt(String plaintext, CryptoContext context);

    /**
     * 加密字节数组
     *
     * @param plaintext 明文字节数组
     * @param context   加密上下文
     * @return 密文字节数组
     */
    byte[] encrypt(byte[] plaintext, CryptoContext context);
}

